<?php 
	include_once('ConnectionDB.php');
	include_once('BeanEvento.php');
	include_once('BeanHorario.php');
	
	class DAOEventos extends ConnectionDB{
		
		private $aEventos;
		
		public function _construct(){
			parent::_construct();
			$this->aEventos = array();
		}
		
		public function getEventosByMes($sMes, $iIdSala){
			$this->sQuery = "SELECT * FROM eventos JOIN horarios ON eventos.id_evento=horarios.id_evento WHERE id_sala = '$iIdSala' AND MONTH(fecha_inicio)='$sMes' AND MONTH(fecha_fin)='$sMes'";
			$iIndex = 0;
			$iContador = 0;
			$oResult = mysql_query($this->sQuery);
			$iNumResultados = mysql_num_rows($oResult);
			if($oResult && $iNumResultados > 0){
				$aRow = mysql_fetch_row($oResult);
				
				while($iContador < $iNumResultados){
					$bCreadoAntes = true;
					$iIDEventoTemp = $aRow[0];
					while($iIDEventoTemp == $aRow[0]){
						if($bCreadoAntes){
							$this->aEventos[] = new BeanEvento($aRow[0],$aRow[1],$aRow[2],$aRow[3],$aRow[4],$aRow[5],$aRow[6]);
							$bCreadoAntes = false;
						}
						$this->aEventos[$iIndex]->addHorario(new BeanHorario($aRow[8],$aRow[9],$aRow[10],$aRow[11],$aRow[12]));
						$aRow = mysql_fetch_row($oResult);
						$iContador++;
					}
					$iIndex++;
				}
			}
			mysql_free_result($oResult);
			
			return $this->aEventos;
		}
		
		public function getEventosByMeses($sMes, $iIdSala){
			$this->sQuery = "SELECT * FROM eventos JOIN horarios ON eventos.id_evento=horarios.id_evento WHERE id_sala = '$iIdSala' AND ((MONTH(fecha_inicio)='".($sMes-1)."' AND MONTH(fecha_fin)='".($sMes-1)."') OR (MONTH(fecha_inicio)='".$sMes."' AND MONTH(fecha_fin)='".$sMes."') OR (MONTH(fecha_inicio)='".($sMes+1)."' AND MONTH(fecha_fin)='".($sMes+1)."')) ORDER BY fecha_inicio";
			$iIndex = 0;
			$iContador = 0;
			$oResult = mysql_query($this->sQuery);
			$iNumResultados = mysql_num_rows($oResult);
			if($oResult && $iNumResultados > 0){
				$aRow = mysql_fetch_row($oResult);
				
				while($iContador < $iNumResultados){
					$bCreadoAntes = true;
					$iIDEventoTemp = $aRow[0];
					while($iIDEventoTemp == $aRow[0]){
						if($bCreadoAntes){
							$this->aEventos[] = new BeanEvento($aRow[0],$aRow[1],$aRow[2],$aRow[3],$aRow[4],$aRow[5],$aRow[6]);
							$bCreadoAntes = false;
						}
						$this->aEventos[$iIndex]->addHorario(new BeanHorario($aRow[8],$aRow[9],$aRow[10],$aRow[11],$aRow[12]));
						$aRow = mysql_fetch_row($oResult);
						$iContador++;
					}
					$iIndex++;
				}
			}
			mysql_free_result($oResult);
			
			return $this->aEventos;
		}
		
		public function saveNewEvent($sNombreEvento,$sEquipo,$sFechaInicio,$sFechaFin,$sHoraInicio,$sHoraFin,$sSolicitante,$sCorreo,$sTelefono,$iSala,$iNumHorario = 1){
			$iError = 0; 
			$oEvent; 
			$this->sQuery = "INSERT INTO eventos VALUES ('','$iSala','$sNombreEvento','$sEquipo','$sSolicitante','$sCorreo','$sTelefono')";
			
			$this->begin();
			$oResult = mysql_query($this->sQuery);
			
			if(!$oResult)
				$iError = 1;
					
			$iAffected_rows += mysql_affected_rows();
			$iIDNewEvento = mysql_insert_id();
			
			$this->sQuery = "INSERT INTO horarios VALUES ('$iIDNewEvento','$iNumHorario','$sFechaInicio','$sFechaFin','$sHoraInicio','$sHoraFin')";
			$oResult2 = mysql_query($this->sQuery);	
			if(!$oResult2)
				$iError = 1;
					
			$iAffected_rows += mysql_affected_rows();
			if($iError)
				$this->rollback();	
			else
				$this->commit();
			
			if($iAffected_rows == 2){
				$oEvent = array('id'=>$iIDNewEvento,'title'=>$sNombreEvento,'equipo'=>$sEquipo,'solicitante'=>$sSolicitante,'correo'=>$sCorreo,'telefono'=>$sTelefono,'start'=>$sFechaInicio.' '. $sHoraInicio.':00','end'=>$sFechaFin.' '.$sHoraFin.':00',"NumeroEvento"=>$iNumHorario,'url'=>'addNewEvent.php','allDay'=>false);
			}
			
			return $oEvent;
		}
		
		public function getEventoByID($iIdEvent){
			$this->sQuery = "SELECT * FROM eventos JOIN horarios ON eventos.id_evento=horarios.id_evento WHERE eventos.id_evento = '$iIdEvent'";
			$iIndex = 0;
			$oResult = mysql_query($this->sQuery);
			$iNumResultados = mysql_num_rows($oResult);
			if($oResult && $iNumResultados > 0){
				$bCreadoAntes = true;
				while($aRow = mysql_fetch_row($oResult)){
					if($bCreadoAntes){
						$this->aEventos[] = new BeanEvento($aRow[0],$aRow[1],$aRow[2],$aRow[3],$aRow[4],$aRow[5],$aRow[6]);
						$bCreadoAntes = false;
					}
					$this->aEventos[$iIndex]->addHorario(new BeanHorario($aRow[8],$aRow[9],$aRow[10],$aRow[11],$aRow[12]));
				}
			}
			mysql_free_result($oResult);
			
			return $this->aEventos;
		}
		
		public function deleteEvent($iIdEvento,$iNumHorario = 1){
			$iError = 0; 
			$oEvent;
			
			$this->sQuery = "DELETE FROM horarios WHERE id_evento = '$iIdEvento' AND num_evento = '$iNumHorario'";
			$this->begin();
			$oResult = mysql_query($this->sQuery);
			
			if(!$oResult)
				$iError = 1;
					
			$iAffected_rows += mysql_affected_rows();
			
			$this->sQuery = "DELETE FROM eventos WHERE id_evento='$iIdEvento'";
			$oResult2 = mysql_query($this->sQuery);	
			if(!$oResult2)
				$iError = 1;
					
			$iAffected_rows += mysql_affected_rows();
			if($iError)
				$this->rollback();	
			else
				$this->commit();
			
			if($iAffected_rows >= 0){
				$oEvent = array('id'=>$iIdEvento,'title'=>$sNombreEvento,'equipo'=>$sEquipo,'solicitante'=>$sSolicitante,'correo'=>$sCorreo,'telefono'=>$sTelefono,'start'=>$sFechaInicio.' '. $sHoraInicio.':00','end'=>$sFechaFin.' '.$sHoraFin.':00',"NumeroEvento"=>$iNumHorario,'url'=>'addNewEvent.php','allDay'=>false);
			}
			
			return $oEvent;
		}
		
		public function updateEvent($sNombreEvento,$sEquipo,$sFechaInicio,$sFechaFin,$sHoraInicio,$sHoraFin,$sSolicitante,$sCorreo,$sTelefono,$iIdEvento,$iNumHorario = 1){
			$iError = 0; 
			$oEvent;
			$this->sQuery = "UPDATE eventos SET nombre_evento = '$sNombreEvento', equipo='$sEquipo', solicitante ='$sSolicitante', correo ='$sCorreo', telefono = '$sTelefono' WHERE id_evento='$iIdEvento'";
			
			$this->begin();
			$oResult = mysql_query($this->sQuery);
			
			if(!$oResult)
				$iError = 1;
					
			$iAffected_rows += mysql_affected_rows();
			
			$this->sQuery = "UPDATE horarios SET fecha_inicio = '$sFechaInicio', fecha_fin = '$sFechaFin', hora_inicio = '$sHoraInicio', hora_fin = '$sHoraFin' WHERE id_evento = '$iIdEvento' AND num_evento = '$iNumHorario'";
			$oResult2 = mysql_query($this->sQuery);	
			if(!$oResult2)
				$iError = 1;
					
			$iAffected_rows += mysql_affected_rows();
			if($iError)
				$this->rollback();	
			else
				$this->commit();
			
			if($iAffected_rows >= 0){
				$oEvent = array('id'=>$iIdEvento,'title'=>$sNombreEvento, 'equipo'=>$sEquipo,'solicitante'=>$sSolicitante,'correo'=>$sCorreo,'telefono'=>$sTelefono,'start'=>$sFechaInicio.' '. $sHoraInicio.':00','end'=>$sFechaFin.' '.$sHoraFin.':00',"NumeroEvento"=>$iNumHorario,'url'=>'addNewEvent.php','allDay'=>false);
			}
			
			return $oEvent;
		}
		
		public function getEventosToday(){
			$sToday = date('Y-m-d');
			$this->sQuery = "SELECT * FROM eventos JOIN horarios ON eventos.id_evento=horarios.id_evento WHERE horarios.fecha_inicio = '$sToday'";
			$iIndex = 0;
			$iContador = 0;
			$oResult = mysql_query($this->sQuery);
			$iNumResultados = mysql_num_rows($oResult);
			if($oResult && $iNumResultados > 0){
				$aRow = mysql_fetch_row($oResult);
				
				while($iContador < $iNumResultados){
					$bCreadoAntes = true;
					$iIDEventoTemp = $aRow[0];
					while($iIDEventoTemp == $aRow[0]){
						if($bCreadoAntes){
							$this->aEventos[] = new BeanEvento($aRow[0],$aRow[1],$aRow[2],$aRow[3],$aRow[4],$aRow[5],$aRow[6]);
							$bCreadoAntes = false;
						}
						$this->aEventos[$iIndex]->addHorario(new BeanHorario($aRow[8],$aRow[9],$aRow[10],$aRow[11],$aRow[12]));
						$aRow = mysql_fetch_row($oResult);
						$iContador++;
					}
					$iIndex++;
				}
			}
			mysql_free_result($oResult);
			
			return $this->aEventos;
		}	
	}
?>